νμ μμ ν νΌ μ ν¨μ± κ²μ¬μ νμ νμ©νμ¬ μμ νκ³ μμ μ μ΄λ©° μ μ§ κ΄λ¦¬κ° μ©μ΄ν μ ν리μΌμ΄μ μ μ μΈκ³μ μΌλ‘ ꡬμΆνμΈμ. μ΄ μ’ ν© κ°μ΄λλ νμ νμ ν¨ν΄κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό νꡬν©λλ€.
νμ μμ ν νΌ μ²λ¦¬: κ°λ ₯ν μ ν리μΌμ΄μ μ μν μ λ ₯ μ ν¨μ± κ²μ¬ νμ ν¨ν΄ λ§μ€ν°νκΈ°
νλ μΉ λ° μ ν리μΌμ΄μ κ°λ°μ κ΄λνκ³ μνΈ μ°κ²°λ νκ²½μμ νΌμ μ¬μ©μ μνΈ μμ©μ μν μ£Όμ ν΅λ‘ μν μ νλ©° μ€μν μ 보 κ΅νμ κ°λ₯νκ² ν©λλ€. κ°λ¨ν μ°λ½μ² νΌμμ 볡μ‘ν κΈμ΅ κ±°λ λ° λ±λ‘ ν¬νΈμ μ΄λ₯΄κΈ°κΉμ§ νΌμ μ΄λμλ μ‘΄μ¬ν©λλ€. κ·Έλ¬λ μ¬μ©μ μ λ ₯μ μμ§νλ κ²λ³΄κΈ°μλ κ°λ¨ν νμλ νΉν 보μ, λ°μ΄ν° λ¬΄κ²°μ± λ° μ ν리μΌμ΄μ μμ μ±κ³Ό κ΄λ ¨λ λ§μ λ¬Έμ λ₯Ό μΌκΈ°ν©λλ€. "μ¬μ©μ μ λ ₯μ μ λ μ λ’°νμ§ λ§μμμ€."λΌλ 격μΈμ μμ ν κ°λ° κ΄νμ μ΄μμΌλ‘ λ¨μ μμΌλ©° κ·Έ μ§μ€μ μ ν리μΌμ΄μ μν€ν μ²μ λͺ¨λ κ³μΈ΅μμ λ°ν₯μ μΌμΌν΅λλ€.
μ΄ μ’ ν© κ°μ΄λλ νμ μμ ν νΌ μ²λ¦¬μ νμ μμμ μμΈν μ΄ν΄λ³΄κ³ νΉν μ λ ₯ μ ν¨μ± κ²μ¬ νμ ν¨ν΄μ μ€μ μ λ‘λλ€. μ°λ¦¬μ λͺ©νλ μ¬μ©μ μΉνμ μΌ λΏλ§ μλλΌ μ μΈκ³ μ¬μ©μλ₯Ό μν΄ λ³Έμ§μ μΌλ‘ μμ νκ³ μμ μ μ΄λ©° μ μ§ κ΄λ¦¬κ° μ©μ΄ν νΌμ ꡬμΆν μ μλ μ§μκ³Ό μ€ν κ°λ₯ν μ λ΅μ μ 곡νλ κ²μ λλ€. νμ μμ μ΄ μ μ€μνμ§ μ΄ν΄λ³΄κ³ μΌλ°μ μΈ ν¨μ μ λ°νκ³ λ€μν μ ν¨μ± κ²μ¬ ν¨ν΄μ λ Όμνκ³ λ€μν κΈ°μ μ€νμμ ꡬννκΈ° μν λͺ¨λ² μ¬λ‘λ₯Ό κ°λ΅νκ² μ€λͺ ν©λλ€.
νμ μ΄ μ§μ λμ§ μκ±°λ λμ¨νκ² νμ μ΄ μ§μ λ μ λ ₯μ μν
μ루μ μ λͺ°λνκΈ° μ μ νμ μ΄ μ§μ λμ§ μκ±°λ λμ¨νκ² νμ μ΄ μ§μ λ μ λ ₯μ΄ μ κΈ°νλ λ¬Έμ μ μ¬κ°μ±μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. μ¬μ©μ μ 곡 λ°μ΄ν°λ₯Ό μ격νκ² μ ν¨μ± κ²μ¬νκ³ νμ κ²μ¬νμ§ λͺ»νλ©΄ μ¬μν λΆνΈμμ μ¬κ°ν 보μ μΉ¨ν΄ λ° λ°μ΄ν° μμμ μ΄λ₯΄κΈ°κΉμ§ μΉλͺ μ μΈ κ²°κ³Όκ° λ°μν μ μμ΅λλ€. μ΄λ¬ν μνμ μ¬λ¬ μ€μν μμμμ λνλ©λλ€.
보μ μ·¨μ½μ
- κ΅μ°¨ μ¬μ΄νΈ μ€ν¬λ¦½ν (XSS): μ λ ₯ νλμμ κ°λ¨ν λ¬Έμμ΄μ μμνμ§λ§ μ μ± μ¬μ©μκ° μ€ν κ°λ₯ν JavaScript μ½λλ₯Ό μ½μ νκ³ ν΄λΉ μ½λκ° μΉ νμ΄μ§μμ νν°λ§λμ§ μμ μνλ‘ λ λλ§λλ©΄ μ¬μ©μ μΈμ μ νμ΄μ¬νΉνκ±°λ μΉ μ¬μ΄νΈλ₯Ό μμμν€κ±°λ μ¬μ©μλ₯Ό μ μ± μ¬μ΄νΈλ‘ 리λλ μ ν μ μμ΅λλ€. μ격ν νμ λ° μ½ν μΈ μ ν¨μ± κ²μ¬κ° μμΌλ©΄ μ ν리μΌμ΄μ μ΄ μ£Όμ λμμ΄ λ©λλ€.
- SQL μ½μ
: μ ν리μΌμ΄μ
μ΄ μμμ μ ν¨μ±μ΄ κ²μ¬λμ§ μμ μ¬μ©μ μ
λ ₯μ μ¬μ©νμ¬ SQL 쿼리λ₯Ό ꡬμ±ν λ 곡격μλ 쿼리 ꡬ쑰λ₯Ό μ‘°μν μ μμ΅λλ€. μλ₯Ό λ€μ΄
' OR '1'='1'--λ₯Ό μ¬μ©μ μ΄λ¦ νλμ μ½μ νλ©΄ μΈμ¦μ μ°ννκ±°λ μ€μν λ°μ΄ν°λ² μ΄μ€ μ 보λ₯Ό μΆμΆν μ μμ΅λλ€. μ¬κΈ°μ νμ μμ μ μ λ ₯μ΄ μΏΌλ¦¬ μ‘°κ°μ΄ μλ *λ¨μν* μ¬μ©μ μ΄λ¦μΈμ§ νμΈνλ κ²μ μλ―Έν©λλ€. - λͺ λ Ή μ½μ : SQL μ½μ κ³Ό μ μ¬νμ§λ§ μ΄μ 체μ λͺ λ Ήμ λμμΌλ‘ ν©λλ€. μ ν리μΌμ΄μ μ΄ μ¬μ©μ μ λ ₯μ κΈ°λ°μΌλ‘ μ Έ λͺ λ Ήμ μ€ννλ κ²½μ° μ ν¨μ±μ΄ κ²μ¬λμ§ μμ λ°μ΄ν°λ μλ²μμ μμμ λͺ λ Ή μ€νμΌλ‘ μ΄μ΄μ Έ 곡격μμκ² λͺ¨λ μ μ΄ κΆνμ λΆμ¬ν μ μμ΅λλ€.
- XML μΈλΆ μν°ν°(XXE) μ½μ : XML μ λ ₯μ μ²λ¦¬νλ μ ν리μΌμ΄μ μ κ²½μ° μ λλ‘ κ΅¬μ±λμ§ μμ κ²½μ° κ³΅κ²©μλ μΈλΆ μν°ν° μ μλ₯Ό μ½μ νμ¬ λ‘컬 νμΌμ μ½κ±°λ μ격 μ½λλ₯Ό μ€ννκ±°λ μλΉμ€ κ±°λΆ κ³΅κ²©μ μνν μ μμ΅λλ€.
λ°μ΄ν° λ¬΄κ²°μ± λ¬Έμ
- μλͺ»λ νμμ λ°μ΄ν°: "λμ΄"μ λν μ μλ₯Ό μμνλ νλκ° "μ€λ¬Ό"μ λ°κ±°λ λ μ§ νλκ° "λ΄μΌ"μ λ°λλ€κ³ μμν΄ λ³΄μμμ€. μ΄λ μλͺ»λ λ°μ΄ν° μ μ₯, μλͺ»λ κ³μ° λ° μΌκ΄μ± μλ μ ν리μΌμ΄μ λμμΌλ‘ μ΄μ΄μ§λλ€.
- μμμΉ λͺ»ν νμ : μμ€ν μμ λΆμΈ(true/false)μ μμνκ³ μ«μ λλ λ¬Έμμ΄μ λ°μΌλ©΄ μλνμ§ μμ λ°©μμΌλ‘ κ°μ κ°μ λ³ννκ±°λ μ€λ₯λ₯Ό λ°μμν¬ μ μμ΅λλ€. μ΄λ λΉμ¦λμ€ λ‘μ§μ μμμν€κ±°λ λ―Έλ¬νκ³ λλ²κΉ νκΈ° μ΄λ €μ΄ λ¬Έμ λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- μΌκ΄μ± μλ μν: μλͺ»λ λ°μ΄ν°κ° λ°μ΄ν°λ² μ΄μ€μ λ€μ΄κ°λ©΄ ν₯ν μμ , λ³΄κ³ λ° λ°μ΄ν° λ§μ΄κ·Έλ μ΄μ λ Έλ ₯μ 볡μ‘νκ² λ§λλ μΌκ΄μ± μλ μνκ° μμ±λ μ μμ΅λλ€.
λ°νμ μ€λ₯ λ° μ ν리μΌμ΄μ μΆ©λ
- λ§μ νλ‘κ·Έλλ° μΈμ΄μ νλ μμν¬λ νΉμ λ°μ΄ν° νμ μΌλ‘ μλνλλ‘ μ€κ³λμμ΅λλ€. μλͺ»λ νμ μ μ λ¬νλ©΄(μ: λ¬Έμμ΄μ λν΄ μ°μ μ°μ°μ μννλ €κ³ μλ) λ°νμ μμΈκ° λ°μνμ¬ μ ν리μΌμ΄μ κ°λ μ€μ§ μκ°, μ΄μ ν μ¬μ©μ κ²½ν λ° μ μ¬μ μΈ λ°μ΄ν° μμ€μ΄ λ°μν μ μμ΅λλ€.
- μ μ ν μ ν¨μ± κ²μ¬κ° μμΌλ©΄ μ ν리μΌμ΄μ μ΄ μμλλ ꡬ쑰μ μΌμΉνμ§ μλ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ €κ³ μλνμ¬ null ν¬μΈν° μμΈ λλ μ μ¬ν μ€λ₯κ° λ°μν μ μμ΅λλ€.
μ μ§ κ΄λ¦¬ μ λͺ½ λ° μ΄μ ν κ°λ°μ κ²½ν
- νμ μ΄ μ§μ λμ§ μμ μ λ ₯μΌλ‘ μΈν΄ λ°μνλ λ¬Έμ λ₯Ό λλ²κΉ νλ λ° μμ²λ μκ°μ΄ 걸릴 μ μμ΅λλ€. "μ μλμ§ μμ 'length' μμ±μ μ½μ μ μμ΅λλ€."μ κ°μ μ€λ₯ λ©μμ§λ μΆ©λμ΄ λ°μνλ μμΉμμ μμ² μ€ λ¨μ΄μ§ μ λ ₯ νΌμμ λ°μν μ μμ΅λλ€.
- λͺ νν μ λ ₯ κ³μ½μ΄ μμΌλ©΄ μλ‘μ΄ κ°λ°μκ° μ΄λ€ μ’ λ₯μ λ°μ΄ν°λ₯Ό μμν΄μΌ νλμ§ λλ νΌκ³Ό μμ νκ² μνΈ μμ©νλ λ°©λ²μ μ΄ν΄νκΈ°κ° μ΄λ ΅μ΅λλ€. μ΄λ ν μμ°μ±μ μ νμν€κ³ μλ‘μ΄ λ²κ·Έλ₯Ό μ λ°ν μνμ μ¦κ°μν΅λλ€.
μ λ ₯ μ ν¨μ± κ²μ¬μμ νμ μμ μ΄ν΄
ν΅μ¬μ μΌλ‘ μ λ ₯ μ ν¨μ± κ²μ¬μ νμ μμ μ μ¬μ©μ λλ μΈλΆ μμ€μμ μμ λ λ°μ΄ν°κ° μ²λ¦¬λκ±°λ μ μ₯λκΈ° μ μ 미리 μ μλ νμ λ° κ΅¬μ‘°λ₯Ό μ€μνλμ§ νμΈνλ κ²μ μλ―Έν©λλ€. νλκ° λΉμ΄ μμ§ μμμ§ νμΈνλ κ² μ΄μμ λλ€. "λμ΄" νλμ μ€μ μ«μκ° ν¬ν¨λμ΄ μλμ§, "μ΄λ©μΌ" νλμ μ΄λ©μΌ νμμ μ€μνλ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μλμ§, "νκ·Έ λͺ©λ‘" νλμ λ¬Έμμ΄ λ°°μ΄μ΄ ν¬ν¨λμ΄ μλμ§ νμΈνλ κ²μ λλ€.
νΌ μ λ ₯μ λν νμ μμ μ μλ―Έ
νΌ μ λ ₯μ λν νμ μμ μ λν΄ μ΄μΌκΈ°ν λ μ°λ¦¬λ κ³μ½μ λΆκ³Όν©λλ€. "μ΄ νλμ λν λ°μ΄ν°λ₯Ό μ μΆνλ κ²½μ° μ΄ νμ μ΄μ΄μΌ νλ©° μ΄λ¬ν νΉμ μ μ½ μ‘°κ±΄μ μΆ©μ‘±ν΄μΌ ν©λλ€." μ΄ κ³μ½μ λ€μμ μ μ©λ©λλ€.
- κΈ°λ³Έ νμ : λ¬Έμμ΄μ΄ μ€μ λ‘ λ¬Έμμ΄μΈμ§, μ μκ° μ μμΈμ§, λΆμΈμ΄ λΆμΈμΈμ§ λ±μ νμΈν©λλ€.
- ꡬ쑰μ νμ : κ°μ²΄ λλ λ°°μ΄κ³Ό κ°μ 볡μ‘ν μ λ ₯μ κ²½μ° μμλλ μμ±/μμκ° μλμ§ νμΈνκ³ ν΄λΉ μμ±/μμκ° νΉμ νμ μ μ€μνλμ§ νμΈν©λλ€.
- μλ―Έμ νμ (λλ©μΈ νΉμ ): λ¬Έμμ΄μ΄ λ¨μν λ¬Έμμ΄μ΄ μλλΌ μ ν¨ν μ΄λ©μΌ μ£Όμ, μ ν¨ν URL, μ ν¨ν λ μ§ νμ λλ νΉμ νμ μ μλ³μ(μ: UUID)μΈμ§ νμΈν©λλ€.
νμ μμ μ ν¨μ± κ²μ¬ μ±νμ μ΄μ
μ ν¨μ± κ²μ¬μ λν νμ μμ μ κ·Ό λ°©μμ μ±ννλ©΄ μ ν리μΌμ΄μ μ νμ§κ³Ό 볡μλ ₯μ κ·Όλ³Έμ μΌλ‘ ν₯μμν€λ μλ§μ μ΄μ μ΄ μμ΅λλ€.
- μ‘°κΈ° μ€λ₯ κ°μ§: νμ κ³Ό μ μ½ μ‘°κ±΄μ 미리 μ μν¨μΌλ‘μ¨ μ λ ₯ μμ μμ λ§μ μ μ¬μ μΈ λ¬Έμ κ° λ°μνμ¬ μλͺ»λ λ°μ΄ν°κ° μ ν리μΌμ΄μ λ‘μ§ λλ λ°μ΄ν°λ² μ΄μ€ λ κΉμμ΄ μ νλλ κ²μ λ°©μ§ν©λλ€. μ΄λ κ² νλ©΄ λλ²κΉ μ΄ μΌμͺ½μΌλ‘ μ΄λνμ¬ μλΉν μκ°κ³Ό 리μμ€λ₯Ό μ μ½ν μ μμ΅λλ€.
- ν₯μλ 보μ: μ격ν νμ μ ν¨μ± κ²μ¬λ λ§μ μΌλ°μ μΈ μ½μ 곡격과 λ°μ΄ν° μ‘°μ μλμ λν κ°λ ₯ν μ΅μ μ λ°©μ΄μ λλ€. μμμΉ λͺ»ν λ°μ΄ν° νμ κ³Ό ꡬ쑰λ₯Ό κ±°λΆν¨μΌλ‘μ¨ κ³΅κ²© νλ©΄μ ν¬κ² μ€μΌ μ μμ΅λλ€.
- κ°μ λ μ½λ κ°λ μ± λ° μ μ§ κ΄λ¦¬μ±: μ ν¨μ± κ²μ¬ κ·μΉμμ μμλλ νμ κ³Ό νμμ λͺ μμ μΌλ‘ λͺ μνλ©΄ μ½λμ μλκ° λ λͺ νν΄μ§λλ€. μ΄λ μ΄μμλ λ¬Έμ μν μ νμ¬ κ°λ°μκ° μμ€ν μ λ μ½κ² μ΄ν΄νκ³ μμ νκ³ νμ₯ν μ μλλ‘ ν©λλ€.
- λ λμ 리ν©ν λ§: λͺ ννκ² μ μλ λ°μ΄ν° κ³μ½μ ν΅ν΄ νΌ μ λ ₯κ³Ό μνΈ μμ©νλ μ½λλ² μ΄μ€ λΆλΆμ 리ν©ν λ§νλ κ²μ΄ λ μνν΄μ§λλ€. κΈ°λ³Έ λ°μ΄ν° ꡬ쑰 λλ μ ν¨μ± κ²μ¬ κ·μΉμ λ³κ²½ μ¬νμ΄ μ¦μ λͺ νν΄μ§λλ€.
- κ°λ ₯ν API μ€κ³: λ°±μλ APIμ κ²½μ° νμ μμ μ ν¨μ± κ²μ¬λ μμ μμ²μ΄ μμλλ νμ΄λ‘λ μ€ν€λ§λ₯Ό μ€μνλμ§ νμΈνμ¬ APIλ₯Ό λ μμΈ‘ κ°λ₯νκ² νκ³ μμμΉ λͺ»ν λμμ΄ λ°μνκΈ° μ½μ§ μλλ‘ ν©λλ€.
- μΌκ΄λ μ¬μ©μ κ²½ν: μ λ ₯μ΄ νμ μꡬ μ¬νμ μΆ©μ‘±νμ§ λͺ»ν λ μ¦κ°μ μ΄κ³ ꡬ체μ μΈ νΌλλ°±μ μ 곡ν¨μΌλ‘μ¨ μ¬μ©μλ μ€μλ₯Ό λΉ λ₯΄κ² μμ νμ¬ λ λΆλλ½κ³ λ§μ‘±μ€λ¬μ΄ μνΈ μμ©μ ν μ μμ΅λλ€.
νμ μμ μ ν¨μ± κ²μ¬μ ν΅μ¬ μμΉ
ν¨κ³Όμ μΈ νμ μμ μ ν¨μ± κ²μ¬λ ꡬν λ° μ² νμ μλ΄νλ λͺ κ°μ§ κΈ°λ³Έ μμΉμ κΈ°λ°μΌλ‘ ꡬμΆλ©λλ€.
"μ¬μ©μ μ λ ₯μ μ λ μ λ’°νμ§ λ§μμμ€."(NTUI)
μ΄κ²μ ν©κΈλ₯ μ λλ€. μ¬μ©μ νΌ μ μΆ, API νΈμΆ λλ νμΌ μ λ‘λμ κ°μ μΈλΆ μμ€μμ λ°μνλ λͺ¨λ λ°μ΄ν° μ‘°κ°μ μ μ¬μ μΌλ‘ μ μ± λλ μλͺ»λ νμμΌλ‘ μ²λ¦¬λμ΄μΌ ν©λλ€. μ ν¨μ± κ²μ¬λ νΉν μλ² μΈ‘μμ μΈλΆ λ°μ΄ν°κ° μμ€ν μ λ€μ΄μ€λ λͺ¨λ κ²½κ³μμ λ°μν΄μΌ ν©λλ€. ν΄λΌμ΄μΈνΈ μΈ‘ μ ν¨μ± κ²μ¬λ μ¬μ©μ κ²½νμ νμνμ§λ§ 보μμ μν΄ μ μ μΌλ‘ μμ‘΄ν΄μλ μ λ©λλ€.
μ€ν€λ§ κΈ°λ° μ ν¨μ± κ²μ¬
κ°μ₯ κ°λ ₯ν μ κ·Ό λ°©μμ λ°μ΄ν°μ μμλλ λͺ¨μ, νμ λ° μ μ½ μ‘°κ±΄μ μ€λͺ νλ λͺ μμ μ€ν€λ§ λλ κ·μΉ μ§ν©μ μ μνλ κ²μ λλ€. μ΄ μ€ν€λ§λ μ²μ¬μ§ μν μ ν©λλ€. μ λ ₯μ΄ λμ°©νλ©΄ μ΄ μ²μ¬μ§μ λν΄ νμΈλ©λλ€. μ€ν€λ§ μ μλ₯Ό μ§μνλ λꡬ λ° λΌμ΄λΈλ¬λ¦¬(μ: JSON μ€ν€λ§, Zod, Yup, Pydantic)λ μ΄ μμΉμ ν¬κ² μ©μ΄νκ² ν©λλ€.
κ³μΈ΅νλ μ ν¨μ± κ²μ¬: ν΄λΌμ΄μΈνΈ μΈ‘ λ° μλ² μΈ‘
- ν΄λΌμ΄μΈνΈ μΈ‘(νλ°νΈμλ) μ ν¨μ± κ²μ¬: μ΄λ μ¬μ©μμκ² μ¦κ°μ μΈ νΌλλ°±μ μ 곡νμ¬ μ¬μ©μ κ²½νμ ν₯μμν΅λλ€. λΆνμν λ€νΈμν¬ μμ²μ λ°©μ§νκ³ μλ² λΆνλ₯Ό μ€μΌ μ μμ΅λλ€. κ·Έλ¬λ 곡격μκ° μ½κ² μ°νν μ μμΌλ―λ‘ λ³΄μμ μν΄ μ λ’°ν μ μμ΅λλ€. μλ‘λ HTML5 μμ±(
required,pattern,type="email") λ° JavaScript κΈ°λ° μ ν¨μ± κ²μ¬ λΌμ΄λΈλ¬λ¦¬κ° μμ΅λλ€. - μλ² μΈ‘(λ°±μλ) μ ν¨μ± κ²μ¬: μ΄λ λ°μ΄ν° λ¬΄κ²°μ± λ° λ³΄μμ μν κΆκ·Ήμ μΈ κ²μ΄νΈν€νΌμ λλ€. ν΄λΌμ΄μΈνΈ μΈ‘ μ ν¨μ± κ²μ¬λ₯Ό ν΅κ³Όνλμ§ μ¬λΆμ κ΄κ³μμ΄ λͺ¨λ λ°μ΄ν°λ μ²λ¦¬λκ±°λ μ μ₯λκΈ° μ μ μλ²μμ λ€μ μ ν¨μ± κ²μ¬λ₯Ό λ°μμΌ ν©λλ€. μ¬κΈ°μμ νμ μμ μ ν¨μ± κ²μ¬κ° μ ν리μΌμ΄μ μ ν΅μ¬ λ‘μ§κ³Ό λ°μ΄ν°λ² μ΄μ€λ₯Ό 보νΈνλ λ° μ€μν©λλ€.
μ€ν¨ μ°μ μ κ·Ό λ°©μ
μλͺ»λ μ λ ₯μ΄ κ°μ§λλ©΄ μ ν¨μ± κ²μ¬ νλ‘μΈμ€λ κ°λ₯ν ν 빨리 μ’ λ£νκ³ μ€λ₯λ₯Ό λ³΄κ³ νκ³ μλͺ»λ λ°μ΄ν°κ° μ ν리μΌμ΄μ λ‘μ§μΌλ‘ λ μ§νλλ κ²μ λ°©μ§ν΄μΌ ν©λλ€. μ΄λ κ² νλ©΄ 리μμ€ λλΉλ₯Ό μ΅μννκ³ μ μ± λ°μ΄ν°κ° νΌν΄λ₯Ό μ ν μ μλ κΈ°νλ₯Ό μ€μΌ μ μμ΅λλ€. λΆλΆμ μΌλ‘ μ ν¨ν λ°μ΄ν°λ₯Ό μ²λ¦¬νλ €κ³ μλνλ λμ λͺ¨λ νμ μ ν¨ν μ λ ₯μ΄ μ 곡λ λκΉμ§ μ 체 μ μΆμ κ±°λΆνλ κ²μ΄ μ’ μ’ λ μμ ν©λλ€.
λͺ ννκ³ μ€ν κ°λ₯ν μ€λ₯ 보κ³
μ ν¨μ± κ²μ¬μ μ€ν¨νλ©΄ μ ν리μΌμ΄μ μ λͺ ννκ³ κ°κ²°νλ©° μ¬μ©μ μΉνμ μΈ μ€λ₯ λ©μμ§λ₯Ό μ 곡ν΄μΌ ν©λλ€. μ΄λ¬ν λ©μμ§λ μ¬μ©μμκ² λ¬΄μμ΄ μλͺ»λμλμ§μ μμ λ°©λ²μ μ ννκ² μλ €μΌ ν©λλ€(μ: "μ΄λ©μΌ νμμ΄ μλͺ»λμμ΅λλ€.", "λΉλ°λ²νΈλ 8μ μ΄μμ΄μ΄μΌ νλ©° μ«μλ₯Ό ν¬ν¨ν΄μΌ ν©λλ€."). APIμ κ²½μ° κ΅¬μ‘°νλ μ€λ₯ μλ΅(μ: νΉμ μ€λ₯ μ½λμ νλ μμ€ λ©μμ§κ° ν¬ν¨λ JSON)μ ν΄λΌμ΄μΈνΈ μλΉμ νμμ μ λλ€.
μ λ ₯ μ ν¨μ± κ²μ¬λ₯Ό μν μ£Όμ νμ ν¨ν΄
μΌλ°μ μΈ νμ ν¨ν΄κ³Ό μ λ ₯ μ ν¨μ± κ²μ¬μ μ μ©λλ λ°©μμ μ΄ν΄λ³΄κ² μ΅λλ€. μ΄λ¬ν ν¨ν΄μ λ¨μν μ‘΄μ¬ νμΈμ λμ΄ λ°μ΄ν°μ λ΄μ¬μ νμ§κ³Ό νΉμ±μ 보μ₯ν©λλ€.
1. κΈ°λ³Έ νμ κ²μ¬(κΈ°λ³Έ νμ )
μ΄λ λ°μ΄ν°κ° μμλλ κΈ°λ³Έ λ°μ΄ν° νμ μ ν΄λΉνλμ§ νμΈνλ κΈ°λ³Έ λΉλ© λΈλ‘μ λλ€.
-
λ¬Έμμ΄:
- λΉμ΄ μμ§ μμ/νμ: κ°μ΄ μλμ§ νμΈν©λλ€.
- μ΅μ/μ΅λ κΈΈμ΄: νμ© κ°λ₯ν λ¬Έμμ΄ κΈΈμ΄λ₯Ό μ μν©λλ€(μ: μ¬μ©μ μ΄λ¦μ 3~20μ μ¬μ΄μ¬μΌ ν©λλ€).
- νΉμ λ¬Έμ μ§ν©(μ κ·μ): λ¬Έμμ΄μ νμ©λ λ¬Έμλ§ ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€(μ: μμ«μλ§, νΉμ κΈ°νΈ μμ). μ: URLμ "μ¬λ¬κ·Έ".
- HTML/μ€ν¬λ¦½νΈ νκ·Έ μμ: XSSλ₯Ό λ°©μ§νκΈ° μν΄ μ μ¬μ μΌλ‘ μνν μ½ν μΈ λ₯Ό μ κ±°νκ±°λ μ΄μ€μΌμ΄νν©λλ€.
- νΈλ¦¬λ°: μ ν/νν 곡백μ μ κ±°ν©λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: λ¬Έμ μΈμ½λ©(μ: κ΅μ λ¬Έμμ κ²½μ° UTF-8)μ μ μνμμμ€. κΈΈμ΄ κ²μ¬λ λ©ν°λ°μ΄νΈ λ¬Έμμ κ²½μ° λ°μ΄νΈ μκ° μλ λ¬Έμ μλ₯Ό κ³ λ €ν΄μΌ ν©λλ€.
-
μ«μ(μ μ, λΆλ μμμ ):
- μ«μμΈκ°: μ λ ₯μ΄ μ«μ νμ μΌλ‘ κ°μ λ³νλ μ μλμ§ νμΈν©λλ€.
- μ μ/λΆλ μμμ μΈκ°: μ μμ μμλ₯Ό ꡬλ³ν©λλ€.
- λ²μ(μ΅μ/μ΅λ κ°): μ«μκ° νμ© κ°λ₯ν λ²μ λ΄μ μλμ§ νμΈν©λλ€(μ: λμ΄ 18~120μΈ, μλ 1~100κ°).
- μμ/μμ: μ«μκ° νΉμ λΆνΈ μꡬ μ¬νμ μΆ©μ‘±νλμ§ νμΈν©λλ€(μ: κ°κ²©μ μμμ¬μΌ ν©λλ€).
- μ λ°λ: λΆλ μμμ μ κ²½μ° νμ©λλ μ΅λ μμ μλ¦Ώμλ₯Ό μ§μ ν©λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: λ‘μΌμΌλ³ μ«μ νμ(μ: μΌνλ₯Ό μμμ κ΅¬λΆ κΈ°νΈλ‘ μ¬μ©νλ κ²½μ° λ λ§μΉ¨ν)μ μκ³ μμ΄μΌ ν©λλ€. κ°λ₯νλ©΄ κ°λ₯ν ν 빨리 νμ€ μ«μ ννμΌλ‘ λ³ννμμμ€.
-
λΆμΈ:
- λΆμΈμΈκ°: μ λ ₯μ΄ λͺ μμ μΌλ‘ true λλ falseμΈμ§ νμΈν©λλ€.
- κ°μ λ³ν: μΌλΆ μμ€ν μμλ "1", "0", "yes", "no", "on", "off"λ₯Ό νμ©νκ³ λ³νν μ μμ΅λλ€. νμ μμ μ ν¨μ± κ²μ¬λ μ΄ λ³νμ΄ λͺ μμ μ΄κ³ μλμ μΈμ§ νμΈν©λλ€.
-
λ μ§/μκ°:
- μ ν¨ν νμ: λ¬Έμμ΄μ΄ μ§μ λ λ μ§/μκ° ν¨ν΄(μ: YYYY-MM-DD, ISO 8601)μ μ€μνλμ§ νμΈν©λλ€.
- ꡬ문 λΆμ κ°λ₯ν λ μ§: λ¬Έμμ΄μ΄ μ€μ μ ν¨ν λ μ§λ₯Ό λνλ΄λμ§ νμΈν©λλ€(μ: 2μ 30μΌ μλ).
- κ³Όκ±°/λ―Έλ: λ μ§λ₯Ό κ³Όκ±°(μ: μλ μμΌ) λλ λ―Έλ(μ: μ΄λ²€νΈ λ μ§)λ‘ μ νν©λλ€.
- λ μ§ λ²μ: λ μ§κ° μμ λ μ§μ μ’ λ£ λ μ§ μ¬μ΄μ μλμ§ νμΈν©λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: λ μ§ λ° μκ° νμμ μ μΈκ³μ μΌλ‘ λ§€μ° λ€μν©λλ€. λͺ¨νΈμ±μ νΌνκΈ° μν΄ νμ μλ² μΈ‘μμ νμ€ μκ°λ μΈμ νμ(μ: UTC)μΌλ‘ ꡬ문 λΆμνμμμ€. νμ νμμ ν΄λΌμ΄μΈνΈ μΈ‘μμ νμ§νν μ μμ΅λλ€.
2. ꡬ쑰μ νμ κ²μ¬(볡μ‘ν νμ )
μ λ ₯μ΄ λ¨μν κΈ°λ³Έμ΄ μλλΌ λ 볡μ‘ν λ°μ΄ν° κ΅¬μ‘°μΈ κ²½μ° κ΅¬μ‘°μ μ ν¨μ± κ²μ¬κ° νμμ μ λλ€.
-
κ°μ²΄:
- μμ μμ±: κ°μ²΄μ νμν λͺ¨λ ν€κ° ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€(μ: μ¬μ©μ κ°μ²΄μ
firstName,lastName,emailμ΄ μμ΄μΌ ν©λλ€). - μ μ μλ μμ± μμ: μμμΉ λͺ»ν μ μ¬μ μΌλ‘ μ μμ μΈ μΆκ° νλκ° μ λ¬λλ κ²μ λ°©μ§ν©λλ€.
- μ€μ²©λ νμ
: κ°μ²΄ λ΄μ κ° μμ±μ μ체 νμ
λ° μ ν¨μ± κ²μ¬ κ·μΉμ μ μ©μ λ°μ μ μμ΅λλ€(μ:
addressλstreet,city,zipCodeλ₯Ό ν¬ν¨νλ κ°μ²΄μ΄λ©° κ° μμ±μλ μ체 λ¬Έμμ΄ μ ν¨μ± κ²μ¬κ° μμ΅λλ€).
- μμ μμ±: κ°μ²΄μ νμν λͺ¨λ ν€κ° ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€(μ: μ¬μ©μ κ°μ²΄μ
-
λ°°μ΄:
- λ°°μ΄μΈκ°: μ λ ₯μ΄ λ°°μ΄μΈμ§ νμΈν©λλ€.
- νΉμ νμ μ μμ: λ°°μ΄ λ΄μ λͺ¨λ μμκ° νΉμ νμ κ³Ό μ ν¨μ± κ²μ¬ κ·μΉ(μ: λ¬Έμμ΄ λ°°μ΄, μ«μ λ°°μ΄ λλ κ°μ²΄ λ°°μ΄, κ° κ°μ²΄μ μ체 μ€ν€λ§κ° μμ)μ μ€μνλμ§ νμΈν©λλ€.
- μ΅μ/μ΅λ κΈΈμ΄: λ°°μ΄μμ νμ© κ°λ₯ν μμ μλ₯Ό μ μν©λλ€.
- κ³ μ μ±: λ°°μ΄μ λͺ¨λ μμκ° κ³ μ νμ§ νμΈν©λλ€.
3. μλ―Έμ /λλ©μΈ νΉμ νμ κ²μ¬
μ΄λ¬ν ν¨ν΄μ μ λ ₯μ μλ―Έ λλ λλ©μΈ νΉμ μ ν¨μ±μ κ²μ¬νλ©° μ’ μ’ λ 볡μ‘ν λ‘μ§μ΄λ μΈλΆ 리μμ€κ° νμν©λλ€.
-
μ΄λ©μΌ μ£Όμ:
- νμ μ ν¨μ± κ²μ¬(μ κ·μ):
name@domain.tldμ κ°μ ν¨ν΄μ νμΈν©λλ€. μ κ·μμ΄ μ 체 RFC μ€μλ₯Ό μν΄ λ³΅μ‘ν μ μμ§λ§ ν©λ¦¬μ μΈ ν¨ν΄μ λλΆλΆμ μ ν¨ν κ²½μ°λ₯Ό λ€λ£Ήλλ€. - DNS MX λ μ½λ κ²μ¬(μ ν μ¬ν, λΉλκΈ°): μ΄λ©μΌ μ£Όμμ λλ©μΈ λΆλΆμ΄ μ€μ λ‘ μ‘΄μ¬νκ³ λ©μΌμ λ°μ μ μλμ§ νμΈν©λλ€. μ΄λ μ’ μ’ λΉλκΈ° μλ² μΈ‘ μ ν¨μ± κ²μ¬μ λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: μ΄λ©μΌ μ£Όμμλ λ§μ νΉμ λ¬Έμμ κ΅μ νλ λλ©μΈ μ΄λ¦(IDN)μ΄ ν¬ν¨λ μ μμ΅λλ€. κ°λ ₯ν μ κ·μ λλ μ μ© λΌμ΄λΈλ¬λ¦¬κ° νμν©λλ€.
- νμ μ ν¨μ± κ²μ¬(μ κ·μ):
-
URL(Uniform Resource Locator):
- μ ν¨ν νμ: μ ν¨ν μ€ν€λ§(http/https), νΈμ€νΈ, κ²½λ‘ λ° μ νμ 쿼리 λ§€κ° λ³μλ₯Ό νμΈν©λλ€.
- μ°λ½ κ°λ₯(μ ν μ¬ν, λΉλκΈ°): URLμ μ‘μΈμ€νμ¬ λΌμ΄λΈμ΄κ³ μ±κ³΅ μνλ₯Ό λ°ννλμ§ νμΈνλ €κ³ μλν©λλ€.
-
μ ν λ²νΈ:
- μ§μλ³ νμ: μ ν λ²νΈλ κ΅κ°λ§λ€ ν¬κ² λ€λ¦ λλ€(μ: κΈΈμ΄, μ λμ¬, κ΅κ° μ½λ μ‘΄μ¬ μ¬λΆ).
- E.164 νμ€: μ ν λ²νΈμ λν κ΅μ νμ€(μ: +CC NNNNNNNNNN)μ λν΄ μ ν¨μ±μ κ²μ¬ν©λλ€. Googleμ libphonenumberμ κ°μ λΌμ΄λΈλ¬λ¦¬λ μ¬κΈ°μμ λ§€μ° μ μ©ν©λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: μ΄κ²μ νΉμ 컨ν μ€νΈ μμ΄ μ μμ μΌλ‘ μ ν¨μ±μ κ²μ¬νκΈ° κ°μ₯ μ΄λ €μ΄ μ λ ₯μΌ κ²μ λλ€. νμ μμλλ νμμ λͺ νν νκ±°λ κ°λ ₯ν κ΅μ ν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμμμ€.
-
μ΄κ±°ν/λ²μ£Ό κ°:
- νμ©λ λͺ©λ‘: μ λ ₯ κ°μ΄ νμ© κ°λ₯ν μ΅μ μ 미리 μ μλ μ§ν© μ€ νλμΈμ§ νμΈν©λλ€(μ: "μν" νλλ "보λ₯ μ€", "μΉμΈλ¨" λλ "κ±°λΆλ¨"μ΄μ΄μΌ ν©λλ€. "κ΅κ° μ½λ"λ μλ €μ§ λͺ©λ‘μμ κ°μ ΈμμΌ ν©λλ€).
-
UUID/GUID(Universally Unique Identifier):
- νμ μ ν¨μ± κ²μ¬: μ
λ ₯ λ¬Έμμ΄μ΄ νμ€ UUID νμ(μ:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx)μ μ€μνλμ§ νμΈν©λλ€.
- νμ μ ν¨μ± κ²μ¬: μ
λ ₯ λ¬Έμμ΄μ΄ νμ€ UUID νμ(μ:
-
μ¬μ©μ μ§μ μλ³μ:
- ν¨ν΄ μΌμΉ: μ ν리μΌμ΄μ νΉμ ID(μ: μ ν μ½λ, μ£Όλ¬Έ λ²νΈ)μ κ²½μ° μ κ·μ λλ νΉμ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μ¬λ°λ₯Έ νμμ νμΈν©λλ€.
- 체ν¬μ¬/κ³μ κ²μ¬: μ μ© μΉ΄λ λ²νΈ(Luhn μκ³ λ¦¬μ¦), κ΅λ―Ό ID λ²νΈ λλ μν κ³μ’ λ²νΈμ κ°μ IDμ κ²½μ° μ²΄ν¬μ¬μ λ΄λΆ μΌκ΄μ±μ νμΈν μ μμ΅λλ€.
κΈλ‘λ² κ³ λ € μ¬ν: κ΅λ―Ό ID λ²νΈ, μΈκΈ ID λ° μν κ³μ’ νμμ κ΅κ°λ§λ€ ν¬κ² λ€λ¦ λλ€. μ ν¨μ± κ²μ¬κ° νΉμ μ§μ λλ 컨ν μ€νΈλ₯Ό κ³ λ €νλμ§ νμΈνμμμ€.
-
νμΌ μ
λ‘λ:
- νμΌ νμ
(MIME νμ
): νμ₯μκ° μλ μ€μ νμΌ νμ
(μ:
image/jpeg,application/pdf)μ μ ν¨μ±μ κ²μ¬ν©λλ€. - νμΌ ν¬κΈ°: νμΌμ΄ νμ© κ°λ₯ν μ΅λ ν¬κΈ°λ₯Ό μ΄κ³Όνμ§ μλμ§ νμΈν©λλ€.
- μ½ν μΈ κ²μ¬: 보μ κ°νλ₯Ό μν΄ μ λ‘λλ νμΌμμ 맬μ¨μ΄ λλ μ μ± μ€ν¬λ¦½νΈλ₯Ό κ²μ¬ν©λλ€.
- νμΌ νμ
(MIME νμ
): νμ₯μκ° μλ μ€μ νμΌ νμ
(μ:
4. κ΄κ³ν νμ κ²μ¬(κ΅μ°¨ νλ μ ν¨μ± κ²μ¬)
κ²½μ°μ λ°λΌ ν νλμ μ ν¨μ±μ λμΌν νΌ λλ λ°μ΄ν° ꡬ쑰 λ΄μ λ€λ₯Έ νλμ κ°μ λ°λΌ λ¬λΌμ§λλ€.
- κ΅μ°¨ νλ μ’
μμ±:
- λΉλ°λ²νΈ λ° λΉλ°λ²νΈ νμΈ: λ νλκ° μΌμΉνλμ§ νμΈν©λλ€.
- μμ λ μ§ < μ’ λ£ λ μ§: μμ λ μ§κ° μ’ λ£ λ μ§ μ΄μ μ λ°μνλμ§ μ ν¨μ±μ κ²μ¬ν©λλ€.
- μ‘°κ±΄λΆ νλ: "νμμ΄μλκΉ?"κ° μ°ΈμΈ κ²½μ° "νμ ID"κ° νμν©λλ€.
- μ‘΄μ¬ νμΈ(λΉλκΈ°):
- κ³ μ ν μ¬μ©μ μ΄λ¦/μ΄λ©μΌ: μ¬μ©μ μ΄λ¦ λλ μ΄λ©μΌ μ£Όμκ° λ°μ΄ν°λ² μ΄μ€μ μ΄λ―Έ μλμ§ νμΈν©λλ€. μ΄λ μΌλ°μ μΌλ‘ λΉλκΈ° μλ² μΈ‘ μ ν¨μ± κ²μ¬μ λλ€.
- μ°Έμ‘° 무결μ±: μ¬μ©μ